package com.example.fg;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn_a = findViewById(R.id.btn_a);
        Button btn_b = findViewById(R.id.btn_b);

        FrameLayout fr_layout = findViewById(R.id.fr_layout);

        /**
         * FragmentManager的作用是用来管理Fragment的生命周期以及与Fragment相关的事务，如添加、删除、替换等。
         * FragmentManager与Activity之间的关系紧密，是Activity的重要组成部分。
         * FragmentManager是通过FragmentManagerImpl实现的，FragmentManagerImpl实现了FragmentManager接口，同时也持有一个Activity对象，用于管理该Activity中的Fragment。
         */
        FragmentManager fragmentManager = getSupportFragmentManager();
        btn_a.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                /**
                 * FragmentTransaction是用来执行Fragment的一系列事务，这些事务包括对Fragment的添加、删除、替换、隐藏等操作。
                 * 例如：
                 *
                 * FragmentTransaction中的add()方法，可以将一个Fragment添加到Activity中。
                 * FragmentTransaction中的remove()方法，可以从Activity中删除一个Fragment，并销毁视图。
                 * FragmentTransaction中的replace()方法，可以用一个新的Fragment替换掉原来的Fragment。
                 * FragmentTransaction中的hide()方法，可以隐藏当前Fragment。
                 * FragmentTransaction中的show()方法，可以显示当前Fragment。
                 */
                FragmentTransaction transaction=fragmentManager.beginTransaction();
                transaction.replace(R.id.fr_layout,new FragmentA());
                transaction.addToBackStack(null);
                transaction.commit();
            }
        });

        btn_b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction transaction=fragmentManager.beginTransaction();
                transaction.replace(R.id.fr_layout,new FragmentB());
                transaction.addToBackStack(null);
                transaction.commit();
            }
        });
    }
}